package main

import (
	"fmt"
	"gPublic/Viper"
	"gPublic/handle"
	"gPublic/routers"
	"log"

	"net"

	// _ "gPublic/grpc/pubData/go" //引用protoc生成的go package
	pb2 "gPublic/grpc/yz-pub-data/openData"

	// handle "gPublic/handle"
	"gPublic/utils"

	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"
	"google.golang.org/grpc"
)

// 原始 启动grpc  这样无法启动多个 并监听同一个端口， 也无法让普通的http请求公用同一个端口 ******************************
func InitConfig2() {
	viper.SetConfigFile("config-develop.yml")
	err := viper.ReadInConfig()
	if err != nil {
		fmt.Println(err)
	}
}

func startGRPCServer2(s *grpc.Server, lis net.Listener) {
	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve gRPC server: %v", err)
	}
}

func main2() {
	router := gin.Default()
	routers.AppRoutes(router)
	InitConfig2()
	Viper.ViperTest()

	// go func() {
	// 	lis1, err := net.Listen("tcp", ":5904")
	// 	if err != nil {

	// 		log.Fatalf("failed to listen for Service1 gRPC server: %v", err)
	// 	}
	// server1 := grpc.NewServer()
	// pb1.RegisterPbuDataServer(server1, &handle.ServerPubData{})
	// startGRPCServer2(server1, lis1)
	// }()

	go func() {
		lis1, err := net.Listen("tcp", ":5904")
		if err != nil {
			log.Fatalf("failed to listen for Service2 - open gRPC server: %v", err)
		}

		server2 := grpc.NewServer()
		pb2.RegisterOpenDataServer(server2, &handle.ServerPcOpenData{})
		startGRPCServer2(server2, lis1)

		// 无法这样实现
		// server1 := grpc.NewServer()
		// pb1.RegisterPbuDataServer(server1, &handle.ServerPubData{})
		// startGRPCServer2(server1, lis1)

	}()

	// 初始化redis
	utils.InitRedis()

	// router.SetTrustedProxies([]string{"47.117.156.51"})
	// router.Run(":5905")
}
